﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

// NoReviewButNeed

#pragma once

#include "GmFamilyServiceInterface.h"
#include "IParameter.h"

namespace gcmp
{
    class UniIdentity;
    /// \brief 族类型的描述信息
    ///
    /// 族类型有自己的名称和描述，用户可编辑.
    /// 参数可以是族计算后对外显示的只读参数；
    /// 参数可以是接受用户输入，并驱动族的输入参数；
    /// 参数可以是有内置系统行为，从系统环境中获取数据的自动参数（称为环境引用类型的参数）.
    class GM_FAMILY_SERVICE_INTERFACE_EXPORT IFamilyTypeInfo
    {
    public:
        /// \brief 析构函数
        virtual ~IFamilyTypeInfo();

    public:
        /// \brief 获取族类型的名称
        /// \return 返回族类型的名称String
        virtual std::wstring GetName() const = 0;

        /// \brief 获取族类型的描述
        /// \return 返回族类型的描述String
        virtual std::wstring GetDescription() const = 0;

        /// \brief 获取族类型的唯一标识符
        /// \return 返回族类型的唯一标识符
        virtual UniIdentity GetFamilyTypeUid() const = 0;

        /// \brief 获取族类型的类型参数数据对象集合
        /// \return 返回族类型的类型参数数据对象的向量集合
        virtual std::vector<OwnerPtr<IParameter>> GetTypeParameters() const = 0;
        
        /// \brief 获取族类型的实例参数数据对象集合
        /// \return 返回族类型的实例参数数据对象的向量集合
        virtual std::vector<OwnerPtr<IParameter>> GetInstanceParameters() const = 0;
    };
}





